package sistema.web.dao.impls;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import sistema.web.dao.ICotizacionDAO;
import sistema.web.dtos.CotizacionDTO;
import sistema.web.utils.MySQLConnection;

public class CotizacionDAO implements ICotizacionDAO {

	public List<CotizacionDTO> listar(String campo, Object valor) {
		List<CotizacionDTO> listCotizacion = null;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = 
				"SELECT " + 
				"	* " + 
				"FROM " + 
				"    diacampo dia, " +
				"    cotizacion cot, " +
				"    club clu, " +
				"    persona per " +
				"WHERE " +
				"    dia.idPersona = per.idPersona " +
				"    AND dia.idClub = clu.idClub " +
				"    AND cot.idDiaCampo = dia.idDiaCampo"
			;
			
			if(campo != null && valor != null) {
				if(!campo.equals("idCotizacion")) {
					query += 
						" AND " +
							campo + " like '%" + valor + "%'"
					;					
				} else {
					query += 
						" AND " +
							campo + " = " + valor
					;					
				}			
			}
			
			PreparedStatement pst = conn.prepareStatement(query);
			ResultSet rs = pst.executeQuery();
			listCotizacion = new ArrayList<CotizacionDTO>();
			while(rs.next()) {
				CotizacionDTO dtoCotizacion = new CotizacionDTO();
				
				dtoCotizacion.setIdCotizacion(rs.getInt("idCotizacion"));
				dtoCotizacion.setNroParticipantes(rs.getInt("dia.CantParticipantes"));
				dtoCotizacion.setDescClub(rs.getString("clu.Nombre"));
				dtoCotizacion.setMontoTotal(rs.getDouble("MontoTotal"));
				dtoCotizacion.setIdOferta(rs.getInt("Oferta_idOferta"));
				dtoCotizacion.setIdDiaCampo(rs.getInt("idDiaCampo"));
				dtoCotizacion.setEstado(rs.getString("cot.Pagado"));
				
				dtoCotizacion.setFecha(rs.getString("Fecha"));
				
				dtoCotizacion.setIdPersona(rs.getInt("idPersona"));
				dtoCotizacion.setNomApe(rs.getString("Nombres") + " " + rs.getString("ApePaterno") + " " + rs.getString("ApeMaterno"));
								
				listCotizacion.add(dtoCotizacion);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return listCotizacion;
	}

	public boolean actualizar(String codigo, String estado) {
		boolean flag;
		
		try {
			Connection conn = MySQLConnection.getConnection();
			
			String query = "UPDATE cotizacion SET Pagado = '" + estado + "' WHERE idCotizacion = " + codigo;
			
			PreparedStatement pst = conn.prepareStatement(query);
			pst.executeUpdate();
			
			flag = true;
			
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		
		return flag;
	}
}